﻿#ifndef MACO_H
#define MACO_H
#include <QObject>
#include <tcpclient.h>
#include <intListener.h>
#include <QTimer>
#include <QMessageBox>
#include <QStandardPaths>
#include <QFileDialog>
#include <CommonHelper.h>
#include <QRandomGenerator>
#include "logHelperJ.h"

#ifdef Q_OS_WINDOWS
#include <QAxObject>
#endif


class maco : public QObject
{
    Q_OBJECT


public:
    maco();
    ~maco();

signals:
    void rgwd(QString temp);
    void shwdd(QString temp);
    void advalread(QString adval);
    void spbsread(QString bsval);
    void xzbsread(QString bsval);
    void gqread(QString gqval);
    void gqcsread(QStringList gqcs);
    void sjwcsread(QVariantList sjwcs);
    void kbcsread(QVariantList kbcs);
    void bjpcread(QVariantList bjval);
public:
    //设备切换
    Q_INVOKABLE  int sbChange(QString index);

    TcpClient *hfClient ;
    CommonHelper *common;
    // 变量
    QString header="6200";
    QString frame_Type = "003B";
    QString frame_Type2 = "003A";
    QString frame_Type3 = "003C";
    QString frame_Type4 = "003D";
    QString frame_Type5 = "003E";
    QString end_frame = "55AA";
    int litopfl=1;
    int litqrfl=1;
    int adfl=0;
    QTimer *timSend5=new QTimer;// AD值请求定时器
    int currentRow,currentColumn;
    int djhang,djlie,djhlie;
    int hctype=1;
    int litfl=1;

    // 功能
    Q_INVOKABLE void rgwdr(); // 热盖温度读
    Q_INVOKABLE void rgwdrs(); // 热盖温度读停止
    Q_INVOKABLE void rgwds(double temp); // 热盖温度设置
    Q_INVOKABLE void dkg(QString flag); // 灯开设置
    Q_INVOKABLE void dqk(); // 灯全开
    Q_INVOKABLE void dqg(); // 灯全关
    Q_INVOKABLE void ad1time(); // AD单次采集
    Q_INVOKABLE void adtimes(int row,int column,int times,int cyc,QString td,int flag); // AD连续采集
    Q_INVOKABLE void spr(int row,int column); // 横向电机读取
    Q_INVOKABLE void spw(int row,int column,int value); // 横向电机写入
    Q_INVOKABLE void spy(int row,int column); // 横向电机运动
    Q_INVOKABLE void spf(); // 横向电机运动
    Q_INVOKABLE void sprte(QString speedType,QString times); // 横向电机润脂测试
    Q_INVOKABLE void sprst(); // 横向电机润脂测试
    Q_INVOKABLE void xzr(int row,int column); // 旋转电机读取
    Q_INVOKABLE void xzw(int row,int column,QString value); // 旋转电机写入
    Q_INVOKABLE void xzy(int row,int column); // 旋转电机运动
    Q_INVOKABLE void xzf(); // 旋转电机复位
    Q_INVOKABLE void xzrte(QString speedType,QString times); // 旋转电机润脂测试
    Q_INVOKABLE void xzrst(); // 旋转电机润脂测试
    Q_INVOKABLE void gqt(QString channel); // 光强通道选择
    Q_INVOKABLE void gqr(); // 光强读取
    Q_INVOKABLE void gqw(QString value); // 光强写入
    Q_INVOKABLE void gqxr(); // 光强系数读取
    Q_INVOKABLE void gqxw(QStringList xs); // 光强系数写入
    Q_INVOKABLE void bjbc(QVariantList xs); // 背景偏差保存
    Q_INVOKABLE void bjdq(); // 背景偏差读取
    Q_INVOKABLE QStringList bjdr(); // 背景偏差导入
    Q_INVOKABLE void bjdc(QStringList xs); // 背景偏差导出
    Q_INVOKABLE void cmk(int bs); // 打开仓门
    Q_INVOKABLE void cmg(int bs); // 关闭仓门
    Q_INVOKABLE void hclx(QString hclx); // 耗材类型选择
    Q_INVOKABLE void djss(int bs); // 电机上升
    Q_INVOKABLE void djfw(); // 电机复位
    Q_INVOKABLE void rkrzcs(QString speedType, QString times); // 加热块润脂测试
    Q_INVOKABLE void rktzrz(); // 加热块润脂停止
    Q_INVOKABLE void sjwr(); // 升降温参数读取
    Q_INVOKABLE void sjww(QVariantList cs); // 升降温参数写入
    Q_INVOKABLE void sw(QString temp); // 升温测试
    Q_INVOKABLE void jw(QString temp); // 降温测试
    Q_INVOKABLE void jr(QString p); // 加热测试
    Q_INVOKABLE void zl(QString p); // 制冷测试
    Q_INVOKABLE void kbr(); // K、B值读取
    Q_INVOKABLE void kbw(QVariantList cs); // K、B值写入
    Q_INVOKABLE void zkfw(); // 主控复位
    Q_INVOKABLE void zkbc(); // 主控保存
    Q_INVOKABLE void sbo(); // 水泵开
    Q_INVOKABLE void sbc(); // 水泵关
    Q_INVOKABLE void fso(); // 风扇开
    Q_INVOKABLE void fsc(); // 风扇关
    Q_INVOKABLE void hfcs(); // 恢复初始
    Q_INVOKABLE void sbzj(); // 设备自检

    Q_INVOKABLE void sjws();// 停止测试
    Q_INVOKABLE void ckcon(QString ip, QString port);
    Q_INVOKABLE void tdxz(QString td);
    Q_INVOKABLE void zkcz(QString cz); //主控操作
    Q_INVOKABLE void shwd();
private slots:
    void readyRead_Slot();
};

#endif // MACO_H
